home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / datelib.exe / CHECKTIM.C < prev    next >
C/C++ Source or Header  |  1992-03-27  |  4KB  |  134 lines

  1. static char checktime_prog[] = "@(#)Testung auf gültige Zeit";
  2. static char checktime_ver[]  = "@(#)ver 1.00/kr ; 09.06.91";
  3. /* checktime        Funktion testet auf gültigen Zeit-String
  4. **
  5. ** Autor            Klaus Rath
  6. **
  7. ** Deklaration
  8. **
  9. ** Übergabe         Die Funktion erwartet einen String in einem der folgenden
  10. **                  Formate :
  11. **                  hh:mm[:ss]       -- Formate 1,2
  12. **                  hh.mm[.ss]       -- Formate 3,4
  13. **                  hhmm[ss]         -- Formate 5,6 (für DDB/4)
  14. **                  (sssss  | mmmm    -- Kurzformate 7,8 (nur Sek./Min.)
  15. **                   noch nicht implementiert !!!!! )
  16. **
  17. ** Rückgabe         int [format|FALSE] wobei z.Zt. 1 <= format <=6
  18. **
  19. ** Anmerkungen      Sollten keine Sekunden im Übergabestring angegeben worden
  20. **                  sein, nimmt die Funktion 00 s an (Formate 1-6).
  21. **
  22. ** Änderungen       1.00 ; 09.06.91
  23. **                  - Erste Version
  24. */
  25.  
  26. #define DEBUG
  27.  
  28. #include <stdio.h>
  29. #include <string.h>
  30. #ifdef __TURBOC__
  31. #include <stdlib.h>
  32. #endif
  33. #include "datum.h"
  34.  
  35. int checktime(char *tstring)
  36. {
  37.     char   stunden_s[3];
  38.     char   minuten_s[3];
  39.     char   sekunden_s[3];
  40.     int    stunden_z;
  41.     int    minuten_z;
  42.     int    sekunden_z;
  43.     int    laenge;
  44.     int    format;
  45.  
  46.     /* Längenüberprüfung :
  47.     */
  48.     laenge = strlen(tstring);
  49.     if ( laenge == 4 || laenge == 5 || laenge == 6 || laenge == 8 )
  50.         ;
  51.     else
  52.         return(FALSE);
  53.  
  54.     /* Format überprüfen und umkopieren :
  55.     */
  56.     if ( ( tstring[2] == ':' && tstring[5] == ':' && laenge == 8 )
  57.          ||
  58.          ( tstring[2] == '.' && tstring[5] == '.' && laenge == 8 ) ) {
  59.         stunden_s[0]   = tstring[0];
  60.         stunden_s[1]   = tstring[1];
  61.         stunden_s[2]   = '\0';
  62.         minuten_s[0]   = tstring[3];
  63.         minuten_s[1]   = tstring[4];
  64.         minuten_s[2]   = '\0';
  65.         sekunden_s[0]  = tstring[6];
  66.         sekunden_s[1]  = tstring[7];
  67.         sekunden_s[2]  = '\0';
  68.         if ( tstring[2] == ':' )
  69.             format = TI_HMS_D;
  70.         else if ( tstring[2] == '.' )
  71.             format = TI_HMS_P;
  72.         else
  73.             return(FALSE);
  74.     } /* ENDE: Formate 2,4 : hh[:.]mm[:.]ss */
  75.  
  76.     else if ( ( tstring[2] == ':' || tstring[2] == '.' ) && laenge == 5 ) {
  77.         stunden_s[0]   = tstring[0];
  78.         stunden_s[1]   = tstring[1];
  79.         stunden_s[2]   = '\0';
  80.         minuten_s[0]   = tstring[3];
  81.         minuten_s[1]   = tstring[4];
  82.         minuten_s[2]   = '\0';
  83.         sekunden_s[0]  = '0';
  84.         sekunden_s[1]  = '0';
  85.         sekunden_s[2]  = '\0';
  86.         if ( tstring[2] == ':' )
  87.             format = TI_HM_D;
  88.         else if ( tstring[2] == '.' )
  89.             format = TI_HM_P;
  90.         else
  91.             return(FALSE);
  92.     } /* ENDE: Formate 1,3 : hh[:.]mm */
  93.  
  94.     else if ( laenge == 4 || laenge == 6 ) {            /* Datenbank-Format */
  95.             stunden_s[0]    = tstring[0];
  96.             stunden_s[1]    = tstring[1];
  97.             stunden_s[2]    = '\0';
  98.             minuten_s[0]    = tstring[2];
  99.             minuten_s[1]    = tstring[3];
  100.             minuten_s[2]    = '\0';
  101.             if ( laenge == 6 ) {
  102.                 sekunden_s[0]   = tstring[4];
  103.                 sekunden_s[1]   = tstring[5];
  104.                 sekunden_s[2]   = '\0';
  105.                 format          = TI_HMS_DB;
  106.             }
  107.             else if ( laenge == 4 ) {
  108.                 sekunden_s[0]   = '0';
  109.                 sekunden_s[1]   = '0';
  110.                 sekunden_s[2]   = '\0';
  111.                 format          = TI_HM_DB;
  112.             }
  113.             else
  114.                 return(FALSE);
  115.     } /* ENDE: Datenbankformate 5,6 : hhmm[ss] */
  116.     else
  117.         return(FALSE);
  118.     /* ENDE:if(Formatprüfung und Kopierung) */
  119.  
  120.     /* Konvertierung :
  121.     */
  122.     stunden_z  = atoi(stunden_s);
  123.     minuten_z  = atoi(minuten_s);
  124.     sekunden_z = atoi(sekunden_s);
  125.  
  126.     if ( stunden_z >  23 || stunden_z  < 0 ||
  127.          minuten_z >  59 || minuten_z  < 0 ||
  128.          sekunden_z > 59 || sekunden_z < 0    )
  129.         return(FALSE);
  130.  
  131.     return(format);
  132. } /* ENDE: checktime() */
  133.  
  134.